package class01

import "math"

/*
	有一些排成一行的正方形。每个正方形已经被染成红色或者绿色。现在可以选择
	任意的一个正方形然后用这两种颜色的任意一种进行染色，这个正方形的颜色将
	会被覆盖。目标是在完成染色之后，每个红色R都比每个绿色G距离最左侧近。
	返回最少需要涂染几个正方形状。
	如：s = RGRGR  最好的方案是涂成 RRRGG， 需要涂两个
*/
func MinPaint(s string) int {
	ans := math.MaxInt
	var leftGNum int
	var rightRNum int
	for i:=0; i<len(s); i++ {
		if s[i] == 'R' {
			rightRNum++
		}
	}
	for i:=0; i<len(s); i++ {
		ans = min(ans, leftGNum+rightRNum)
		if s[i] == 'R' {
			rightRNum--
		}
		if s[i] == 'G' {
			leftGNum++
		}
	}
	ans = min(ans, leftGNum+rightRNum)
	return ans
}

func min(a, b int) int {
	if a > b {
		return b
	}
	return a
}
